package com.tianji.promotion.service;

import com.tianji.common.domain.dto.PageDTO;
import com.tianji.promotion.domain.dto.CouponFormDTO;
import com.tianji.promotion.domain.dto.CouponIssueFormDTO;
import com.tianji.promotion.domain.po.Coupon;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tianji.promotion.domain.query.CouponQuery;
import com.tianji.promotion.domain.vo.CouponDetailVO;
import com.tianji.promotion.domain.vo.CouponPageVO;

import javax.validation.Valid;

/**
 * <p>
 * 优惠券的规则信息 服务类
 * </p>
 *
 * @author 老李头儿
 * @since 2025-04-03
 */
public interface ICouponService extends IService<Coupon> {

    /**
    * @Description 新增优惠券接口
    * @Author 老李头儿
    * @Date 2025年04月03 15:32:18
    * @param dto
    * @Return void
    **/

    void saveCoupon(@Valid CouponFormDTO dto);

    /**
    * @Description 分页查询优惠券接口
    * @Author 老李头儿
    * @Date 2025年04月03 20:42:40
    * @param query
    * @Return com.tianji.common.domain.dto.PageDTO<com.tianji.promotion.domain.vo.CouponPageVO>
    **/

    PageDTO<CouponPageVO> queryCouponPage(CouponQuery query);



    /**
    * @Description 发放优惠券接口
    * @Author 老李头儿
    * @Date 2025年04月03 20:58:31
    * @param dto
    * @Return void
    **/

    void issueCoupon(CouponIssueFormDTO dto);

    /**
    * @Description 修改优惠券接口
    * @Author 老李头儿
    * @Date 2025年04月04 13:11:51
    * @param dto
    * @Return void
    **/

    void updateCoupon(CouponIssueFormDTO dto);

    /**
    * @Description 删除优惠券接口
    * @Author 老李头儿
    * @Date 2025年04月04 13:58:47
    * @param dto
    * @Return void
    **/

    void deleteCoupon(CouponIssueFormDTO dto);

    /**
    * @Description 根据id查询优惠券详情接口
    * @Author 老李头儿
    * @Date 2025年04月04 14:16:46
    * @param id
    * @Return com.tianji.promotion.domain.vo.CouponDetailVO
    **/
    CouponDetailVO queryCouponDetail(Long id);

    /**
    * @Description TODO
    * @Author 老李头儿
    * @Date 2025年04月04 15:11:16
    * @param id
    * @Return void
    **/
    void pauseCoupon(Long id);
}
